package pr2.mutacion;

import java.util.ArrayList;
import java.util.List;

import pr2.cromosoma.CromosomaPVC;

public class MutacionInsercion implements EstrategiaMutacion<CromosomaPVC> {

	private int numInserciones;

	public MutacionInsercion(int numInserciones) {
		this.numInserciones = numInserciones;
	}

	@Override
	public void muta(CromosomaPVC cromosoma, double prob) {

		double probabilidad = Math.random();
		Integer posInicial, posFinal, ciudad;
        int insercionesLocal = numInserciones;
//		List<Integer> aux;

		if (probabilidad <= prob) {

			while (insercionesLocal > 0) {

				posInicial = new Double(Math.random()
						* cromosoma.getFenotipo().size()).intValue();
				posFinal = new Double(Math.random()
						* cromosoma.getFenotipo().size()).intValue();

				ciudad = cromosoma.getFenotipo().get(posInicial);

                cromosoma.getGenes().remove((int)posInicial); //borramos lo que hay en esa posicion
                cromosoma.getGenes().add(posFinal, ciudad); //mueve los demas a la derecha

				insercionesLocal--;
			}

		}

	}

}
